home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / c / stormamiga_lib-v45_00d / stormc_v3-examples / special / speedtest / speedtest-stormamiga.c < prev   
C/C++ Source or Header  |  2000-02-28  |  9KB  |  379 lines

  1. /********************************************
  2. **                                         **
  3. **                SpeedTest                **
  4. **                                         **
  5. **  Copyright 1996/98 by CyberdyneSystems  **
  6. **                                         **
  7. **        written by Matthias Henze        **
  8. **                                         **
  9. ***************** 18/09/98 *****************/
  10.  
  11. #define STORMAMIGA_NOWB
  12. #include <stormamiga.h>
  13.  
  14. #include <stdio.h>
  15. #include <time.h>
  16. #include <math.h>
  17. #include <pragma/exec_lib.h>
  18.  
  19. clock_t timestart;
  20. double z = 0;
  21.  
  22. void end (void)
  23. {
  24.   double y;
  25.   clock_t timeend;
  26.   timeend = clock ();
  27.   y = ((timeend - timestart) / (double)50);
  28.   printf ("Benötigte Zeit: %.5g  s\n", y);
  29.   z = z + y;
  30. }
  31.  
  32. int main__ (void)
  33. {
  34.   double *d, x;
  35.   double a = 80.9394;
  36.   double b = -80.9394;
  37.   int *e, i, loop;
  38.  
  39. printf("\nGeben Sie bitte die Anzahl der Testdurchläufe an: ");
  40. scanf_("%d",&loop);
  41.  
  42. Forbid ();
  43.  
  44. /*--fabs--*/
  45. printf ("fabs (80.9394)\n");
  46. timestart = clock ();
  47.   for (i = 0; i < loop; i++)
  48.     x = fabs (a);
  49. end();
  50. printf ("Der absolute Betrag von 80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
  51.  
  52. printf ("fabs (-80.9394)\n");
  53. timestart = clock ();
  54.   for (i = 0; i < loop; i++)
  55.     x = fabs (b);
  56. end();
  57. printf ("Der absolute Betrag von -80.9394 sollte 80.9394 sein und ist: %g\n\n", x);
  58.  
  59. /*--floor--*/
  60. printf ("floor (80.9394)\n");
  61. timestart = clock ();
  62.   for (i = 0; i < loop; i++)
  63.     x = floor (a);
  64. end();
  65. printf ("Die nächstkleinere Ganzzahl von 80.9394 sollte 80 sein und ist: %g\n\n", x);
  66.  
  67. printf ("floor (-80.9394)\n");
  68. timestart = clock ();
  69.   for (i = 0; i < loop; i++)
  70.     x = floor (b);
  71. end();
  72. printf ("Die nächstkleinere Ganzzahl von -80.9394 sollte -81 sein und ist: %g\n\n", x);
  73.  
  74. /*--sqrt--*/
  75. printf ("sqrt (9)\n");
  76. timestart = clock ();
  77.   for (i = 0; i < loop; i++)
  78.     x = sqrt (9);
  79. end();
  80. printf ("Die Quadratwurzel von 9 sollte 3 sein und ist: %g\n\n", x);
  81.  
  82. printf ("sqrt (-9)\n");
  83. timestart = clock ();
  84.   for (i = 0; i < loop; i++)
  85.     x = sqrt (-9);
  86. end();
  87. printf ("Die Quadratwurzel von -9 sollte NaN (Not a Number) sein und ist: %g\n\n", x);
  88.  
  89. /*--ceil--*/
  90. printf ("ceil (80.9394)\n");
  91. timestart = clock ();
  92.   for (i = 0; i < loop; i++)
  93.     x = ceil (a);
  94. end();
  95. printf ("Die nächstgrößere Ganzzahl von 80.9394 sollte 81 sein und ist: %g\n\n", x);
  96.  
  97. printf ("ceil (-80.9394)\n");
  98. timestart = clock ();
  99.   for (i = 0; i < loop; i++)
  100.     x = ceil (b);
  101. end();
  102. printf ("Die nächstgrößere Ganzzahl von -80.9394 sollte -80 sein und ist: %g\n\n", x);
  103.  
  104. /*--frexp--*/
  105. printf ("frexp (9)\n");
  106. timestart = clock ();
  107.   for (i = 0; i < loop; i++)
  108.     x = frexp (9,(void *) &e);
  109. end();
  110. printf ("Die Mantisse von 9 sollte 0.5625 sein und ist: %g\nDer Exponent von 9 sollte 4 sein und ist: %d\n\n", x, e);
  111.  
  112. printf ("frexp (88)\n");
  113. timestart = clock ();
  114.   for (i = 0; i < loop; i++)
  115.     x = frexp (88,(void *) &e);
  116. end();
  117. printf ("Die Mantisse von 88 sollte 0.6875 sein und ist: %g\nDer Exponent von 88 sollte 7 sein und ist: %d\n\n", x, e);
  118.  
  119. /*--modf--*/
  120. printf ("modf (80.9394)\n");
  121. timestart = clock ();
  122.   for (i = 0; i < loop; i++)
  123.     x = modf (a,(void *) &d);
  124. end();
  125. printf ("Der Nachkommateil von 80.9394 sollte 0.9394 sein und ist: %g\nDer Vorkommateil von 80.9394 sollte 80 sein und ist: %g\n\n", x, d);
  126.  
  127. printf ("modf (-80.9394)\n");
  128. timestart = clock ();
  129.   for (i = 0; i < loop; i++)
  130.     x = modf (b,(void *) &d);
  131. end();
  132. printf ("Der Nachkommateil von -80.9394 sollte -0.9394 sein und ist: %g\nDer Vorkommateil von -80.9394 sollte -80 sein und ist: %g\n\n", x, d);
  133.  
  134. /*--fmod--*/
  135. printf ("fmod (5.7, 1.5)\n");
  136. timestart = clock ();
  137.   for (i = 0; i < loop; i++)
  138.     x = fmod (5.7,1.5);
  139. end();
  140. printf ("Das Ergebnis dieser Funktion sollte 1.2 sein und ist: %g\n\n", x);
  141.  
  142. printf ("fmod (-5.7, 1.5)\n");
  143. timestart = clock ();
  144.   for (i = 0; i < loop; i++)
  145.     x = fmod (-5.7,1.5);
  146. end();
  147. printf ("Das Ergebnis dieser Funktion sollte -1.2 sein und ist: %g\n\n", x);
  148.  
  149. /*--ldexp--*/
  150. printf ("ldexp (9, 3)\n");
  151. timestart = clock ();
  152.   for (i = 0; i < loop; i++)
  153.     x = ldexp (9,3);
  154. end();
  155. printf ("Das Produkt von 9 * (2³) sollte 72 sein und ist: %g\n\n", x);
  156.  
  157. printf ("ldexp (-9, 3)\n");
  158. timestart = clock ();
  159.   for (i = 0; i < loop; i++)
  160.     x = ldexp (-9,3);
  161. end();
  162. printf ("Das Produkt von -9 * (2³) sollte -72 sein und ist: %g\n\n", x);
  163.  
  164. /*--exp--*/
  165. printf ("exp (0)\n");
  166. timestart = clock ();
  167.   for (i = 0; i < loop; i++)
  168.     x = exp (0);
  169. end();
  170. printf ("Das Ergebnis dieser Funktion sollte 1 sein und ist: %g\n\n", x);
  171.  
  172. printf ("exp (1)\n");
  173. timestart = clock ();
  174.   for (i = 0; i < loop; i++)
  175.     x = exp (1);
  176. end();
  177. printf ("Das Ergebnis dieser Funktion sollte 2.71828 sein und ist: %g\n\n", x);
  178.  
  179. /*--log--*/
  180. printf ("log (1)\n");
  181. timestart = clock ();
  182.   for (i = 0; i < loop; i++)
  183.     x = log (1);
  184. end();
  185. printf ("Der Logarithmus naturalis von 1 sollte 0 sein und ist: %g\n\n", x);
  186.  
  187. printf ("log (9)\n");
  188. timestart = clock ();
  189.   for (i = 0; i < loop; i++)
  190.     x = log (9);
  191. end();
  192. printf ("Der Logarithmus naturalis von 9 sollte 2.19722 sein und ist: %g\n\n", x);
  193.  
  194. /*--log10--*/
  195. printf ("log10 (1)\n");
  196. timestart = clock ();
  197.   for (i = 0; i < loop; i++)
  198.     x = log10 (1);
  199. end();
  200. printf ("Der dekadische Logarithmus von 1 sollte 0 sein und ist: %g\n\n", x);
  201.  
  202. printf ("log10 (9)\n");
  203. timestart = clock ();
  204.   for (i = 0; i < loop; i++)
  205.     x = log10 (9);
  206. end();
  207. printf ("Der dekadische Logarithmus von 9 sollte 0.954243 sein und ist: %g\n\n", x);
  208.  
  209. /*--pow--*/
  210. printf ("pow (9,1)\n");
  211. timestart = clock ();
  212.   for (i = 0; i < loop; i++)
  213.     x = pow (9,1);
  214. end();
  215. printf ("Die Potenz 9¹ sollte 9 sein und ist: %g\n\n", x);
  216.  
  217. printf ("pow (0.9,3)\n");
  218. timestart = clock ();
  219.   for (i = 0; i < loop; i++)
  220.     x = pow (0.9,3);
  221. end();
  222. printf ("Die Potenz 0.9³ sollte 0.729 sein und ist: %g\n\n", x);
  223.  
  224. /*--acos--*/
  225. printf ("acos (0)\n");
  226. timestart = clock ();
  227.   for (i = 0; i < loop; i++)
  228.     x = acos (0);
  229. end();
  230. printf ("Der Arcuscosinus von 0 sollte 1.5708 sein und ist: %g\n\n", x);
  231.  
  232. printf ("acos (1)\n");
  233. timestart = clock ();
  234.   for (i = 0; i < loop; i++)
  235.     x = acos (1);
  236. end();
  237. printf ("Der Arcuscosinus von 1 sollte 0 sein und ist: %g\n\n", x);
  238.  
  239. /*--cos--*/
  240. printf ("cos (0)\n");
  241. timestart = clock ();
  242.   for (i = 0; i < loop; i++)
  243.     x = cos (0);
  244. end();
  245. printf ("Der Cosinus von 0 sollte 1 sein und ist: %g\n\n", x);
  246.  
  247. printf ("cos (1)\n");
  248. timestart = clock ();
  249.   for (i = 0; i < loop; i++)
  250.     x = cos (1);
  251. end();
  252. printf ("Der Cosinus von 1 sollte 0.540302 sein und ist: %g\n\n", x);
  253.  
  254. /*--cosh--*/
  255. printf ("cosh (0)\n");
  256. timestart = clock ();
  257.   for (i = 0; i < loop; i++)
  258.     x = cosh (0);
  259. end();
  260. printf ("Der Cosinus hyperbolicus von 0 sollte 1 sein und ist: %g\n\n", x);
  261.  
  262. printf ("cosh (1)\n");
  263. timestart = clock ();
  264.   for (i = 0; i < loop; i++)
  265.     x = cosh (1);
  266. end();
  267. printf ("Der Cosinus hyperbolicus von 1 sollte 1.54308 sein und ist: %g\n\n", x);
  268.  
  269. /*--asin--*/
  270. printf ("asin (0)\n");
  271. timestart = clock ();
  272.   for (i = 0; i < loop; i++)
  273.     x = asin (0);
  274. end();
  275. printf ("Der Arcussinus von 0 sollte 0 sein und ist: %g\n\n", x);
  276.  
  277. printf ("asin (1)\n");
  278. timestart = clock ();
  279.   for (i = 0; i < loop; i++)
  280.     x = asin (1);
  281. end();
  282. printf ("Der Arcussinus von 1 sollte 1.5708 sein und ist: %g\n\n", x);
  283.  
  284. /*--sin--*/
  285. printf ("sin (0)\n");
  286. timestart = clock ();
  287.   for (i = 0; i < loop; i++)
  288.     x = sin (0);
  289. end();
  290. printf ("Der Sinus von 0 sollte 0 sein und ist: %g\n\n", x);
  291.  
  292. printf ("sin (1)\n");
  293. timestart = clock ();
  294.   for (i = 0; i < loop; i++)
  295.     x = sin (1);
  296. end();
  297. printf ("Der Sinus von 1 sollte 0.841471 sein und ist: %g\n\n", x);
  298.  
  299. /*--sinh--*/
  300. printf ("sinh (0)\n");
  301. timestart = clock ();
  302.   for (i = 0; i < loop; i++)
  303.     x = sinh (0);
  304. end();
  305. printf ("Der Sinus hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
  306.  
  307. printf ("sinh (1)\n");
  308. timestart = clock ();
  309.   for (i = 0; i < loop; i++)
  310.     x = sinh (1);
  311. end();
  312. printf ("Der Sinus hyperbolicus von 1 sollte 1.1752 sein und ist: %g\n\n", x);
  313.  
  314. /*--atan--*/
  315. printf ("atan (0)\n");
  316. timestart = clock ();
  317.   for (i = 0; i < loop; i++)
  318.     x = atan (0);
  319. end();
  320. printf ("Der Arcustangens von 0 sollte 0 sein und ist: %g\n\n", x);
  321.  
  322. printf ("atan (1)\n");
  323. timestart = clock ();
  324.   for (i = 0; i < loop; i++)
  325.     x = atan (1);
  326. end();
  327. printf ("Der Arcustangens von 1 sollte 0.785398 sein und ist: %g\n\n", x);
  328.  
  329. /*--atan2--*/
  330. printf ("atan2 (9,3)\n");
  331. timestart = clock ();
  332.   for (i = 0; i < loop; i++)
  333.     x = atan2 (9,3);
  334. end();
  335. printf ("Der Arkustangens von 9/3 sollte 1.24905 sein und ist: %g\n\n", x);
  336.  
  337. printf ("atan2 (90,15)\n");
  338. timestart = clock ();
  339.   for (i = 0; i < loop; i++)
  340.     x = atan2 (90,15);
  341. end();
  342. printf ("Der Arkustangens von 90/15 sollte 1.40565 sein und ist: %g\n\n", x);
  343.  
  344. /*--tan--*/
  345. printf ("tan (0)\n");
  346. timestart = clock ();
  347.   for (i = 0; i < loop; i++)
  348.     x = tan (0);
  349. end();
  350. printf ("Der Tangens von 0 sollte 0 sein und ist: %g\n\n", x);
  351.  
  352. printf ("tan (1)\n");
  353. timestart = clock ();
  354.   for (i = 0; i < loop; i++)
  355.     x = tan (1);
  356. end();
  357. printf ("Der Tangens von 1 sollte 1.55741 sein und ist: %g\n\n", x);
  358.  
  359. /*--tanh--*/
  360. printf ("tanh (0)\n");
  361. timestart = clock ();
  362.   for (i = 0; i < loop; i++)
  363.     x = tanh (0);
  364. end();
  365. printf ("Der Tangens hyperbolicus von 0 sollte 0 sein und ist: %g\n\n", x);
  366.  
  367. printf ("tanh (1)\n");
  368. timestart = clock ();
  369.   for (i = 0; i < loop; i++)
  370.     x = tanh (1);
  371. end();
  372. printf ("Der Tangens hyperbolicus von 1 sollte 0.761594 sein und ist: %g\n\n", x);
  373.  
  374. Permit ();
  375.  
  376. printf ("Gesamtzeit für %d Durchgänge: %g  s\n", loop, z);
  377. return NULL;
  378. }
  379.